#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MOD=998244353;
ll sqr_2(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
ll sqr_3(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
ll gcd(ll A,ll B){
if(B==0) return A;
return gcd(B,A%B);
}
ll sqr_4(ll l,ll r,ll x){
while(l<=r){
auto mid=l+r>>1;
if(mid*mid*mid*mid<=x) l=mid+1;
else r=mid-1;
}
return l-1;
}
map<ll,ll>mp,mmp;
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
ll x;
scanf("%lld",&x);
auto tmp=sqr_4(1,40000,x);
if(tmp*tmp*tmp*tmp==x){
mp[tmp]+=4;
continue;
}
tmp=sqr_3(1,1300000,x);
if(tmp*tmp*tmp==x){
mp[tmp]+=3;
continue;
}
tmp=sqr_2(1,1500000000,x);
if(tmp*tmp==x){
mp[tmp]+=2;
continue;
}
bool flag=0;
for(auto it:mp){
if(x%it.first==0){
mp[it.first]++;
mp[x/it.first]++;
flag=1;
break;
}
}
if(flag) continue;
for(auto it:mmp){
if(it.first==x){
mmp[x]++;
flag=1;
break;
}
ll g=gcd(it.first,x);
if(g==1) continue;
mp[g]+=mmp[it.first]+1;
mp[it.first/g]+=mmp[it.first];
mp[x/g]++;
mmp[it.first]=0;
flag=1;
break;
}
if(!flag) mmp[x]++;
}
for(auto it1:mmp){
for(auto it2:mp){
if(it1.first%it2.first==0){
mp[it2.first]+=it1.second;
mp[it1.first/it2.first]+=it1.second;
mmp[it1.first]=0;
break;
}
}
}
ll ans=1;
for(auto it:mp){
// cout<<it.first<<" "<<it.second<<endl;
ans=(ans*(it.second+1))%MOD;
}
for(auto it:mmp){
ans=(ans*(it.second+1))%MOD;
ans=(ans*(it.second+1))%MOD;
}
printf("%lld\n",ans);
return 0;
}
589. N-ary Tree Preorder Traversal | 1299. Replace Elements with Greatest Element on Right Side |
1768. Merge Strings Alternately | 561. Array Partition I |
1374. Generate a String With Characters That Have Odd Counts | 1822. Sign of the Product of an Array |
1464. Maximum Product of Two Elements in an Array | 1323. Maximum 69 Number |
832. Flipping an Image | 1295. Find Numbers with Even Number of Digits |
1704. Determine if String Halves Are Alike | 1732. Find the Highest Altitude |
709. To Lower Case | 1688. Count of Matches in Tournament |
1684. Count the Number of Consistent Strings | 1588. Sum of All Odd Length Subarrays |
1662. Check If Two String Arrays are Equivalent | 1832. Check if the Sentence Is Pangram |
1678. Goal Parser Interpretation | 1389. Create Target Array in the Given Order |
1313. Decompress Run-Length Encoded List | 1281. Subtract the Product and Sum of Digits of an Integer |
1342. Number of Steps to Reduce a Number to Zero | 1528. Shuffle String |
1365. How Many Numbers Are Smaller Than the Current Number | 771. Jewels and Stones |
1512. Number of Good Pairs | 672. Richest Customer Wealth |
1470. Shuffle the Array | 1431. Kids With the Greatest Number of Candies |